/**
 *************************************************************************************************
 * @file    utility.h
 * @author  Miaozi
 * @version V1.0
 * @date    2025-05-14
 * @brief   工具模块头文件：提供一些通用的 C 工具函数，便于跨平台使用
 *
 * 修改记录:
 *   版本号     日期         作者     说明
 *   V1.0     2025-05-14    Miaozi   初始版本
 *************************************************************************************************
 */

#ifndef __LITE_UTILITY_H
#define __LITE_UTILITY_H

#include <stdint.h>
#include "LiteType.h"
#include "buffer.h"

// 设置某一位
#define     SET_FLAG(var, flag)       ((var) |= (flag))
// 清除某一位
#define     CLEAR_FLAG(var, flag)     ((var) &= ~(flag))
// 判断某一位是否为1
#define     IS_FLAG_SET(var, flag)    (((var) & (flag)) != 0)
// 反转某一位
#define     TOGGLE_FLAG(var, flag)    ((var) ^= (flag))

/**
 * @brief 将格式化字符串输出到指定缓冲区
 * 
 * @param buf  输出缓冲区
 * @param size 缓冲区大小
 * @param fmt  格式化字符串（printf风格）
 * @param ...  可变参数
 * @return 实际写入字节数，失败返回 0
 */
uint16_t UTIL_PrintfToBuf(uint8_t *buf, uint16_t size, const uint8_t *fmt, ...);

#endif  // __LITE_UTILITY_H

/***************************** LiteBsp by Miaozi (END OF FILE) *********************************/
